package student;



import java.io.File;
import java.io.IOException;
import java.sql.SQLException;
import java.util.List;
import java.util.Scanner;

public class Menu {
    //定义Menu
/*创建数据库
* 实例化

*  TestMain4 tt = new TestMain4();
* 调用方法
* tt.Time();
* 设置页面
* * ---------------------------------
 * ---------------------------------
 * ----------学生表系统模块------------
 * -------------1.登录---------------
 * -------------0.退出---------------
 * ---------------------------------
 * ---------------------------------
 * ---------------------------------
* 请输入用户名
* 请输入密码
* 实例调用
* 密码通过
* 登录成功
* *-------1.添加学生信息------
 * -------2.删除学生信息------
 * -------3.导入学生信息------
 * -------4.导出学生信息------
 * -------5.修改学生成绩------
 * -------6.查询学生信息------
 * -------7.退出------------
 * ------------------------
 * ---------1--------------
 * -----添加学生信息：学号--------
 * -----添加学生信息：姓名--------
 * -----添加学生信息：出生日期--------
 * -----添加学生信息：性别--------
 * -----添加学生信息：入学成绩--------
 * -----添加学生信息：专业--------
 * -----添加学生信息：班号----------
 * 删除操作
 * 导入学生信息
 * -----请输入文件excel--------
 * -----0.返回上一级l--------
 * 文件不存在的话
 * 循环插入数据操作
 * 插入成功
 * 导出学生信息
 * 查询学生信息
 * 水平等级显示
* */
    public static void main(String[] args) throws SQLException, ClassNotFoundException, IOException {
        /**
         * 对于里面的参数及修饰符
         * public:表示的这个程序的访问权限，表示的是任何的场合可以被引用
         * static：表明方法是静态的，不依赖类的对象的，是属于类的
         * void:main()方法是不需要返回值的main:约定俗成，规定的 String[] args:
         */
//创建数据库

        Scanner sc = new Scanner(System.in);
        while (true) {
            // 实例化
            // TestMain4 tt = new TestMain4();
            // 调用方法
            //  tt.Time();

            Time.main(null);
            System.out.println("---------------------------------");
            System.out.println("---------------------------------");
            System.out.println("---------学生表系统模块-------------");
            System.out.println("------------1.登录----------------");
            System.out.println("------------0.退出----------------");
            System.out.println("---------------------------------");
            System.out.println("---------------------------------");
            /*设置页面
            * ---------------------------------
            * ---------------------------------
            * ----------学生表系统模块------------
            * -------------1.登录---------------
            * -------------0.退出---------------
            * ---------------------------------
            * ---------------------------------
            * ---------------------------------
            * */
            String str = sc.nextLine();
            if ("1".equals(str)) {
                // "1" == str不允许

                while (true) {
                    System.out.println("--------请输入用户名----------");
                    //请输入用户名
                    String username = sc.nextLine();
                    System.out.println("--------请输入密码-----------");
                    //请输入密码
                    String password = sc.nextLine();

                    LoginDao dao = new LoginDao();
                    List<UserPojo> ulist = dao.findByUname(username);
                    //实例调用

                    if (ulist.size() == 1) {
                        //if循环
                        if (ulist.get(0).getPassword().equals(password)) {
                            //密码
                            System.out.println("登录成功");
                            //登录成功

                            while (true) {

                                System.out.println("-------1.添加学生信息------");
                                System.out.println("-------2.删除学生信息------");
                                System.out.println("-------3.导入学生信息------");
                                System.out.println("-------4.导出学生信息------");
                                System.out.println("-------5.修改学生成绩------");
                                System.out.println("-------6.查询学生信息------");
                                System.out.println("-------7.退出------");
                                System.out.println("-------------");
                                System.out.println("-------------");
                                String str1 = sc.nextLine();
                                /*-------1.添加学生信息------
                                * -------2.删除学生信息------
                                * -------3.导入学生信息------
                                * -------4.导出学生信息------
                                * -------5.修改学生成绩------
                                * -------6.查询学生信息------
                                * -------7.退出------
                                * -------------
                                * -------------
                                * */
                                if ("1".equals(str1)) {
                                    System.out.println("-----添加学生信息：学号--------");
                                    //-----添加学生信息：学号--------
                                    String v1 = sc.nextLine();
                                    System.out.println("-----添加学生信息：姓名--------");
                                    //-----添加学生信息：姓名--------
                                    String v2 = sc.nextLine();
                                    System.out.println("-----添加学生信息：出生日期--------");
                                    //-----添加学生信息：出生日期--------
                                    String v3 = sc.nextLine();
                                    System.out.println("-----添加学生信息：性别--------");
                                    //-----添加学生信息：性别--------
                                    String v4 = sc.nextLine();
                                    System.out.println("-----添加学生信息：入学成绩--------");
                                    //-----添加学生信息：入学成绩--------
                                    int v5 = Integer.parseInt(sc.nextLine());
                                    System.out.println("-----添加学生信息：专业--------");
                                    //-----添加学生信息：专业--------
                                    String v6 = sc.nextLine();
                                    System.out.println("-----添加学生信息：班号----------");
                                    //-----添加学生信息：班号----------
                                    int v7 = Integer.parseInt(sc.nextLine());
                                    // int 变更了几条记录
                                    int r = dao.addUserInfo(v1, v2, v3, v4, v5, v6, v7);
                                    System.out.println("添加成了" + r + "条数据");
                                }
 //                               删除操作
                                else if ("2".equals(str1)) {
                                    deletestudent();
                                }
//                                 导入学生信息
                                else if ("3".equals(str1)) { // TODO其他处理
                                    // TODO其他处理
                                    while (true) {
                                        //while 函数

                                        System.out.println("-----请输入文件excel--------");
                                        //-----请输入文件excel--------
                                        System.out.println("-----0.返回上一级l--------");
                                        //-----0.返回上一级l--------

                                        String path = sc.nextLine();
                                        if ("0".equals(path)) {
                                            break;
                                            //返回
                                        } else {
//
                                            // 文件存不存在
                                            File file = new File(path);
                                            if (!file.exists()) {
                                                // 文件不存在的话
                                                System.out.println("-----文件不存在的话--------");
                                            } else {
                                                // 读取文件
                                                if (!file.exists()) {
                                                    // 文件不存在的话
                                                    System.out.println("-----文件不存在的话--------");
                                                } else {
                                                    StudentExcel se = new StudentExcel();
                                                    List<StudentPojo> slist = se.readStudentInfo(file);
                                                    // 循环插入数据操作
                                                    // 循环插入数据操作
                                                    StudentDao studao = new StudentDao();
                                                    studao.insertAll(slist);

                                                    System.out.println("---插入成功--");
                                                    //插入成功
                                                }
                                            }
                                        }
                                    }
                                }
 //                             导出学生信息
                                else if ("4".equals(str1)) {
                                    //水平等级4
                                    exportExcelStudent();
                                }
  //                             查询学生信息
                                else if ("5".equals(str1)) {
                                    //水平等级5
                                    UpdateStudent();
                                }
                                else if ("6".equals(str1)) {
                                    //水平等级6
 //                                   SelectStudent();
                                    System.out.println("--------请输入查询学生名----------");
                                    //--------请输入查询学生名----------
                                    String sname = sc.nextLine();

                                    LoginDao dao1 = new LoginDao();
                                    List<StudentPojo> slist = dao1.selectBySname(sname);
                                    //实例调用

                                }
                                else if ("7".equals(str1)) {
                                    //水平等级7
                                    return;
                                    //返回
                                }


                            }
                                    }else{
                                        System.out.println("用户名存在，密码不正确");
                                        //用户名存在，密码不正确
                                    }
                                } else {
                                    System.out.println("有问题了呀！用户名不存在");
                                    //有问题了呀！用户名不存在
                                }
                            }

                        } else if ("0".equals(str)) {
                //水平等级0
                            System.exit(0);
                        } else {
                            System.out.println("请重新输入");
                //请重新输入
                        }
                    }
                }

    /*private static void SelectStudent() throws SQLException {

                     while(true){
                         System.out.println("--------1.请输入要查询姓名--------------");
                         System.out.println("--------0.退出--------------");

                         // 监控控制台
                         Scanner sc = new Scanner(System.in);
                         //          int sgrade = Integer.parseInt(sc.nextLine());
                         String sname = sc.nextLine();
                         if ("0".equals(sname)) {
                             return; // 结束
                         } else {
                             // 数据的操作
                             StudentDao dao = new StudentDao();
                             //
                             ResultSet r = dao.selectBySname(sname);
                             if ("0".equals(r)) {
                                 System.out.println("学生不存在");
                             } else {
                                 LoginDao dao1 = new LoginDao();
                                 List<StudentPojo> ulist = dao1.selectBySname(sname);//实例调用
                             }
                         }
                     }

    }*/

    /*访问数据库
     * --------请输入学号--------------
     * --------0.退出--------------
     * 监控控制台
     * 数据的操作
     * --------输入要修改的成绩-----------
     * 学号不存在
     * "修改成绩成功\" + r + \"条"
     */

    /**
     * Java程序的入口地址，
     *Java虚拟机运行程序时首先找的就是main方法。
     * main函数，参数Stringl]args是一个字符串数组，
     * 接收来自程序执行时传进来的参数。
     * 如果实在控制台，可以通过变异执行将参数传进来，命令执行如下：
     * javac HashMapTest.java
     * java HashMapTest a b c//字符串以空格方式隔开
     * 这样传进main函数的就是一个字符串数组
     * args[0]= a;args[1]=b;args[2]=c，
     * 如果不传参数进来，args为空。
     * args[0]=a;args[1]=b;args[2]=c;
     * 在Programmer arguments(程序员参数)中输入传进来的参数以空格的方式隔开abc。
     * @throws SQLException
     */
    private static void UpdateStudent() throws SQLException {
        //访问数据库
        while(true){
            System.out.println("--------请输入学号--------------");
            //--------请输入学号--------------
            System.out.println("--------0.退出--------------");
            //--------0.退出--------------

            // 监控控制台
            Scanner sc = new Scanner(System.in);
  //          int sgrade = Integer.parseInt(sc.nextLine());
            String sno = sc.nextLine();
            if ("0".equals(sno)) {
                //水平等级0
                return;
                // 结束
            } else {
                // 数据的操作
                StudentDao dao = new StudentDao();
                System.out.println("--------输入要修改的成绩-----------");
                //--------输入要修改的成绩-----------
                int sgrade = Integer.parseInt(sc.nextLine());
                int r = dao.updateBySno(sno, sgrade);
                if (r == 0) {
                    System.out.println("学号不存在");
                    //学号不存在
                } else {
                    System.out.println("修改成绩成功\" + r + \"条");
                    //"修改成绩成功\" + r + \"条"
                }
            }
        }
    }

/*访问数据库
 * --------1.按班级导出--------------
 * --------0.退出--------------
 * 监控控制台
 * 数据的操作
 * --------输入要修改的成绩-----------
 * --------0.退出--------------
 * 没有信息
 * --------输入导出的地址--------------
 * 根据 文件路径和 集合 组装导出
 * 导出成功
 */

    /**
     * Java语言具有功能强大和简单易用两个特征。
     * Java语言作为静态面向对象编程语言的代表，
     * 极好地实现了面向对象理论，
     * 允许程序员以优雅的思维方式进行复杂的编程。
     * Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点。
     * Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等。
     * @throws SQLException
     * @throws IOException
     */
    private static void exportExcelStudent() throws SQLException, IOException {
        while (true) {
            System.out.println("--------1.按班级导出--------------");
            //--------1.按班级导出--------------
            System.out.println("--------0.退出--------------");
            //--------0.退出--------------
            // 监控控制台
            Scanner sc = new Scanner(System.in);
            String sel = sc.nextLine();
            if ("0".equals(sel)) {
                return;
                // 结束
            } else if ("1".equals(sel)) {
                while (true) {
                    //while函数
                    System.out.println("--------输入班级编号--------------");
                    //--------输入班级编号--------------
                    System.out.println("--------0.退出--------------");
                    //--------0.退出--------------
                    StudentDao dao = new StudentDao();
                    String cid = sc.nextLine();
                    if ("0".equals(cid)) {
                        break;
                    } else {
                        // 字符串转换成
                        int cid1 = Integer.parseInt(cid);
                        List<StudentPojo> slist = dao.findStudentClassByCid(cid1);
//                        for (int i = 0; i < slist.size(); i++) {
//                            System.out.println(slist.get(i).getCid() + "@" + slist.get(i).getSname());
//                        }
                        if (slist.size() == 0) {
                            // 没有信息
                            System.out.println("没有信息");
                            continue;
                            // if else 函数
                        } else {
                            System.out.println("--------输入导出的地址--------------");
                            //--------输入导出的地址--------------
                            String filepath = sc.nextLine();
                            StudentExcel excele = new StudentExcel();
                            // 根据 文件路径和 集合 组装导出
                            excele.exportto(filepath, slist);
                            System.out.println("导出成功！");
                            //导出成功！
                        }
                    }
                }


            } else { // 其他处理
                // TODO


            }
        }

    }

    /*访问数据库
     * --------请输入学号--------------
     * --------0.退出--------------
     * 监控控制台
     * 数据的操作
     * 添加数据
     * 学号不存在
     * "删除成功" + r + "条"
     */

    /**
     * public关键字
     * 声明主函数为public就是告诉其他的类可以访问这个函数。
     * static关键字
     * 告知编译器main函数是一个静态函数。
     * 也就是说main函数中的代码是存储在静态存储区的，
     * 即当定义了类以后这段代码就已经存在了。
     * 如果main()方法没有使用static修饰符，
     * 那么编译不会出错，但是如果你试图执行该程序将会报错，
     * 提示main()方法不存在。
     * 因为包含main()的类并没有实例化(即没有这个类的对象)
     * 所以其main()方法也不会存。
     * 而使用static修饰符则表示该方法是静态的
     * 不需要实例化即可使用。
     * @throws SQLException
     */
    public static void deletestudent() throws SQLException {
        //访问数据库
        while (true) {
            System.out.println("--------请输入学号--------------");
            //--------请输入学号--------------
            System.out.println("--------0.退出--------------");
            //--------0.退出--------------

            // 监控控制台
            Scanner sc = new Scanner(System.in);
            String sno = sc.nextLine();
            if ("0".equals(sno)) {
                return;
                // 结束
            } else {
                // 数据的操作
                StudentDao dao = new StudentDao();
                //添加数据
                int r = dao.deleteBySno(sno);
                //if else 函数
                if (r == 0) {
                    System.out.println("学号不存在");
                 //学号不存在
                } else {
                    System.out.println("删除成功" + r + "条");
                    //"删除成功" + r + "条"
                }
            }
        }
    }



    


            }





